// <license>
// Copyright (C) 2011 Andrea Interguglielmi, All rights reserved.
// This file is part of the coral repository downloaded from http://code.google.com/p/coral-repo.
// 
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
// 
//    * Redistributions of source code must retain the above copyright
//      notice, this list of conditions and the following disclaimer.
// 
//    * Redistributions in binary form must reproduce the above copyright
//      notice, this list of conditions and the following disclaimer in the
//      documentation and/or other materials provided with the distribution.
// 
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// </license>


#ifndef NODEMANAGERWRAPER_H
#define NODEMANAGERWRAPER_H

#include <boost/shared_ptr.hpp>
#include <boost/python.hpp>

#include "../src/NetworkManager.h"
#include "../src/PythonDataCollector.h"

boost::python::object nodeManager_findObjectById(int id){
	return PythonDataCollector::findPyObject(id);
}

void networkManagerWrapper(){
	boost::python::class_<NetworkManager>("NetworkManager")
		.def("objectCount", &NetworkManager::objectCount)
		.staticmethod("objectCount")
		.def("findObjectById", nodeManager_findObjectById)
		.staticmethod("findObjectById")
		.def("allowConnection", &NetworkManager::allowConnection)
		.staticmethod("allowConnection")
		.def("connect", &NetworkManager::connect, ("sourceAttribute", "destinationAttribute", boost::python::args("errorObject") = boost::python::object()))
		.staticmethod("connect")
		.def("isCycle", &NetworkManager::isCycle)
		.staticmethod("isCycle")
		.def("resolveFilename", &NetworkManager::resolveFilename)
		.staticmethod("resolveFilename")
		.def("addSearchPath", &NetworkManager::addSearchPath)
		.staticmethod("addSearchPath")
		.def("removeSearchPath", &NetworkManager::removeSearchPath)
		.staticmethod("removeSearchPath")
	;
}

#endif
